package br.com.trabalho.controller;

import br.com.trabalho.banco.Transacoes;
import br.com.trabalho.entidades.Estado;
import br.com.trabalho.entidades.Usuario;
import br.com.trabalho.util.Util;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebServlet("/cadastro")
public class Cadastro extends HttpServlet {

    protected void processa(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession();
        geraListaEstados(request.getSession());
        
        String url = "cadastro.jsp";
        if (request.getParameter("cadastro") != null) {
            if (request.getParameter("cadastro").equals("true")) {
                Usuario user = new Usuario();
                user.setNome(request.getParameter("nome"));
                user.setEmail(request.getParameter("login"));
                String cidade = request.getParameter("cidade");
                cidade = cidade.toUpperCase();
                user.setCidade(cidade);
                user.setEstado(request.getParameter("estado"));
                user.setTelefone(request.getParameter("telefone"));
                user.setPermissao(Util.user);
                if (request.getParameter("senha").equals(request.getParameter("confirmar_senha"))) {
                    user.setSenha(request.getParameter("senha"));
                    try {
                        Transacoes.inserirUsuario(user);                        
                        url = "cadastro.jsp?cadastro=sucesso";
                    } catch (Transacoes.usuarioJaExisteException ex) {
                        url = "cadastro.jsp?cadastro=jaExiste";
                    }
                } else {
                    url = "cadastro.jsp?cadastro=senhaErrada";
                }
            }
        }

        if (request.getParameter("edicao") != null) {
            if (request.getParameter("edicao").equals("true")) {
                Usuario user = Transacoes.getUsuarioById(Integer.parseInt(request.getParameter("idUsuario")));

                user.setNome(request.getParameter("nome"));
                user.setEmail(request.getParameter("login"));
                String cidade = request.getParameter("cidade");
                cidade.toUpperCase();
                user.setCidade(cidade);
                user.setEstado(request.getParameter("estado"));
                user.setTelefone(request.getParameter("telefone"));
                if (request.getParameter("senha").equals(request.getParameter("confirmar_senha"))) {
                    user.setSenha(request.getParameter("senha"));
                    try {
                        Transacoes.atualizarUsuario(user);                        
                        url = "cadastro.jsp?edicao=sucesso";
                    } catch (Transacoes.usuarioJaExisteException ex) {
                        url = "cadastro.jsp?edicao=jaExiste";
                    }
                } else {
                    url = "cadastro.jsp?edicao=senhaErrada";
                }
            }
        }

        response.sendRedirect(url);
    }

    public void geraListaEstados(HttpSession session) {
        List<Estado> estados = new ArrayList<Estado>();

        estados.add(new Estado("Acre", "AC"));
        estados.add(new Estado("Alagoas", "AL"));
        estados.add(new Estado("Amazonas", "AM"));
        estados.add(new Estado("Amapá", "AP"));
        estados.add(new Estado("Bahia", "BA"));
        estados.add(new Estado("Ceará", "CE"));
        estados.add(new Estado("Distrito Federal", "DF"));
        estados.add(new Estado("Espirito Santo", "ES"));
        estados.add(new Estado("Goiás", "GO"));
        estados.add(new Estado("Maranhão", "MA"));
        estados.add(new Estado("Minas Gerais", "MG"));
        estados.add(new Estado("Mato Grosso do Sul", "MS"));
        estados.add(new Estado("Mato Grosso", "MT"));
        estados.add(new Estado("Pará", "PA"));
        estados.add(new Estado("Paraíba", "PB"));
        estados.add(new Estado("Pernambuco", "PE"));
        estados.add(new Estado("Piauí", "PI"));
        estados.add(new Estado("Paraná", "PR"));
        estados.add(new Estado("Rio de Janeiro", "RJ"));
        estados.add(new Estado("Rio Grande do Norte", "RN"));
        estados.add(new Estado("Rondônia", "RO"));
        estados.add(new Estado("Roraima", "RR"));
        estados.add(new Estado("Rio Grande do Sul", "RS"));
        estados.add(new Estado("Santa Catarina", "SC"));
        estados.add(new Estado("Sergipe", "SE"));
        estados.add(new Estado("São Paulo", "SP"));
        estados.add(new Estado("Tocantins", "TO"));

        session.setAttribute("ESTADOS", estados);
    }

    @Override
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        processa(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        processa(request, response);
    }

}
